nginx部署react docker | 您所在的位置:网站首页 › nginx docker-compose › nginx部署react docker |
不说原理只说怎么做。 前端react:1: 安装nginx 2: 改写 /etc/nginx/sites-enabled/default 如下: server { listen 80 default_server; listen [::]:80 default_server; server_name www.xxxx.com; root /home/aaa/bbb/ccc/build; //生成的压缩文件的地址 index index.html index.htm; # Add index.php to the list if you are using PHP location / { // 这句话要加 因为使用了react-router try_files $uri $uri/ /index.html; } } 此时访问 www.xxxx.com 就能看到前端了 后端: express + mongodbDockerfile, index.js, .env, docker-compose.yml 均在同一目录下。 // .env 这个文件时环境变量配置的文件DB_HOST=localhostDB_USER=rootDB_PASSWORD=123456DB_NAME=todoDB_PORT=27017PORT=3001SALT_ROUNDS = 10TOKEN_KEY = era231fj287ij2331u3409t34t3gj3 MONGODB_USER=user_aMONGODB_PASSWORD=666666MONGODB_DATABASE=todoMONGODB_LOCAL_PORT=7017MONGODB_DOCKER_PORT=27017 NODE_LOCAL_PORT=6868NODE_DOCKER_PORT=8080 // db.js 这个文件是后端Express项目使用mongoose链接数据库的文件 'use strict'; const mongoose = require('mongoose')const config = require('../../utils/config')const { DB_HOST, MONGODB_PASSWORD, MONGODB_USER, DB_PORT, MONGODB_DATABASE,} = process.env;const URL = `mongodb://${MONGODB_USER}:${MONGODB_PASSWORD}@${DB_HOST}:${DB_PORT}/${MONGODB_DATABASE}`// mongodb://todo_admin:[email protected]:27017/todoconsole.log('=======', URL) mongoose.connect(URL); const db = mongoose.connection; db.once('open' ,() => { console.info('连接数据库成功');}) db.on('error', function(error) { console.error('数据库连接失败: ' + error); mongoose.disconnect();}); db.on('close', function () { console.log(URL) console.error('数据库断开,重新连接数据库'); mongoose.connect(URL, {server:{auto_reconnect:true}});}); module.exports = db // DockerfileFROM node:16.0.0COPY . /appWORKDIR /appRUN ["npm", "install"]EXPOSE 3000 // docker-compose.yml 缩紧拷贝过来可能有问题。version: '3' services: mongodb: image: mongo:5.0.7 restart: unless-stopped env_file: ./.env container_name: mongodb ports: - $MONGODB_LOCAL_PORT:$MONGODB_DOCKER_PORT volumes: - ./data:/data/db environment: - MONGO_INITDB_ROOT_USERNAME=$DB_USER - MONGO_INITDB_ROOT_PASSWORD=$DB_PASSWORD web: depends_on: - mongodb build: . command: node index.js env_file: ./.env volumes: - .:/app - /app/node_modules ports: - $PORT:$PORT environment: - DB_HOST=mongodb - DB_USER=$MONGODB_USER - DB_PASSWORD=$MONGODB_PASSWORD - DB_NAME=$MONGODB_DATABASE - DB_PORT=$MONGODB_DOCKER_PORT stdin_open: true tty: true 然后执行命令: docker-compose up。 这个时候会发现后端连接不到数据库,是因为咱们的后端要链接的数据库没有创建呢 用户也没有创建。 创建mongodb用户 docker exec -it mongodb /bin/bash 进入mongodb容器的shellmongo mongodb://localhost:27017 -u root -p 123456 root 和 123456是 DB_USER 和 DB_PASSWORD然后在mongodb的shell里面执行: use todo db.createUser( { user: "user_a", pwd: "123456", roles: [{role: "dbOwner", db: "todo"} ] } ) 就是环境变量设置的这三个字段: MONGODB_USER=user_a MONGODB_PASSWORD=666666 MONGODB_DATABASE=todo |
CopyRight 2018-2019 实验室设备网 版权所有 |